/*
 * Copyright (C) 2010 恒康信息科技有限公司
 * 版权所有
 */
package com.jjmmbb.db.pojo;

import java.util.ArrayList;

import com.jjmmbb.anydolist.Comm;
import com.jjmmbb.anydolist.Util;
import com.jjmmbb.db.db.ItemDao;
import com.jjmmbb.db.db.ItemManager;

public class Item {
	public Integer id;
	public String title = "";
	public String team = "";
	public String time = ""; // 用于排序
	public Long timePlanComplete = (long) 0; // 计划完成时间: 保存毫秒数; 0,表示无计划,
	public Long timeFinish = (long) 0; // 实际完成时间: 保存毫秒数; 0,表示无计划,
	public Long timeAlarm = (long) 0; // 提醒时间: 保存毫秒数; 0,表示无计划,
	public Integer type = Enums.Item_Doing; // 0:待办,1:已完成,2:已删除
	public Integer typeAlarm = -5; // -5、提醒完成,-1、需要提醒(一次),-3、循环提醒(每天),大于0、按星期提醒(二进制标记算法),0:不提醒
	public boolean isSelect = false; // 是否选中,用于批量操作
	ItemManager im;

	public Item() {

	}

	public Item(String title) {
		this.title = title;
	}

	// 新建待办
	public void insert(ItemManager im) {
		type = Enums.Item_Doing;// 选第0项,为finish
		time = Util.getFormateTime();
		im.insert(this);
	}

	// 插入一条记录
	public void save(ItemManager im) {
		im.insert(this);
	}

	// 插入到数据库,并查询返回,以便获取到ID
	public Item insertAndReturn(ItemManager im) {
		insert(im);
		String sql = "select * from " + ItemDao.tableName + " where title ='"
				+ title + "' order by time desc";
		Item item = im.getOneAsSQL(sql);
		return item;
	}

	// 更新状态为待办,并插入数据库
	public void doing(ItemManager im) {
		type = Enums.Item_Doing;// 选第0项,为finish
		time = Util.getFormateTime();// 更新待办时间,并按这个时间排序
		im.update(this);
	}

	// 更新状态为完成,并插入数据库
	public void finish(ItemManager im) {
		type = Enums.Item_Finish;// 选第0项,为finish
		time = Util.getFormateTime(); // 更新完成时间,并按这个时间排序
		im.update(this);
	}

	// 更新状态为删除,并插入数据库
	public void delete(ItemManager im, ArrayList<Item> list) {
		if (type == Enums.Item_Delete) {
			list.remove(this);
			im.delete(id);
		} else {
			type = Enums.Item_Delete;// 选第0项,为finish
			time = Util.getFormateTime(); // 更新删除时间,并按这个时间排序
			im.update(this);
			list.remove(this);
		}
	}

	// 置顶
	public void first(ItemManager im) {
		switch (type) {
		case Enums.Item_Doing:
			doing(im);
			break;
		case Enums.Item_Finish:
			finish(im);
			break;
		case Enums.Item_Delete:
			time = Util.getFormateTime(); // 更新删除时间,并按这个时间排序
			im.update(this);
			break;
		}
	}

	// 更新
	public void update(ItemManager im) {
		im.update(this);
	}
}
